#版本0.1.1
#@author muluan
#@2/12/2023

#指令目录
#make 把该目录下所有.c文件和.cpp都分别make成一个可执行文件
#make clean 清除所有可执行文件
#make mainbuild 把该目录下.c的文件编译链接成一个可执行文件main
#make mainclean 清除mian文件
#make mainbuildcpp 把该目录下.cpp的文件编译链接成一个可执行文件maincpp
#make mainclean 清除miancpp文件
#注意若.c文件名为main.c，则会生成main.o需要手动删除
#注意若.cpp文件名为main.cpp，则会生成maincpp.o需要手动删除

C_SRCS:=$(wildcard *.c)
C_OBJS:=$(patsubst %.c,%.o,$(C_SRCS))
C_TARGETS:=$(patsubst %.c,%,$(C_SRCS))
CPP_SRCS:=$(wildcard *.cpp)
CPP_OBJS:=$(patsubst %.cpp,%.o,$(CPP_SRCS))
CPP_TARGETS:=$(patsubst %.cpp,%,$(CPP_SRCS))
CC:=gcc
PP:=g++

# 分别make
all:$(CPP_TARGETS) $(C_TARGETS)
%:%.c
	$(CC) -o $@ $^ -pthread
%:%.cpp
	$(PP) -o $@ $^ -pthread

.PHONY:clean mainbuild mainclean mainbuildcpp maincleancpp
clean:
	rm -rf $(CPP_TARGETS) $(C_TARGETS)

# 链接make
main:$(C_OBJS)
	$(CC) -o $@ $^ -pthread
%.o:%.c 
	$(CC) -c $^
mainbuild:main 
	rm -rf *.o
mainclean:
	rm -rf main

maincpp:$(CPP_OBJS)
	$(PP) -o $@ $^ -pthread
%.o:%.cpp 
	$(PP) -c $^
mainbuildcpp:maincpp 
	rm -rf *.o
maincleancpp:
	rm -rf maincpp